#Ports
#Imports
#import RPi.GPIO as GPIO

class Ports:
	def __init__(self,ConfigFile,ConstFile):
		self.ArchivoConfiguracion = ConfigFile
		self.ArchivoConstantes = ConstFile
		GPIO.setmode(GPIO.BCM)
	#Setea el puerto como entrada o salida

	def SetPortConfig(self,Port,Type):
			GPIO.setup(int(Port.strip()),GPIO.OUT)
			self.__ModificarPuerto(Port,Type)
	
	#Setea el estado de una salida como encendido o apagado
	def SetPortStatus(self,Port,State):
		if(State=="ON"):
			GPIO.output(Port,True)
		elif (State == "OFF"):
			GPIO.output(Port,False)
	
	#Lee el estado de la entrada
	def ReadPort(self,Port):
		return GPIO.input(int(Port.strip()))
	
	def BuscarPorTipo(self,Tipo):
		ListaPorts = []
		Valores = []
		Archivo = open(self.ArchivoConfiguracion,"r")
		for Linea in Archivo:
			if len(Linea) > 0:
				Pin, Config = Linea.split('=')
			if Config.strip() == Tipo.strip():
				ListaPorts.append(Pin)
		return ListaPorts
		Archivo.close()
		
	def ConvertirAGPIO (self, Port):
		Archivo = open(self.ArchivoConstantes, "r")
		retorno = 0
		for Linea in Archivo:
			Puerto, Pin = Linea.split('=')	
			if Puerto.strip() == Port:
				break
		return Pin
		
		
#-------------------------Metodos Privados -----------------------------				
	def __ModificarPuerto(self,Port,Setting):
		Archivo = open(self.ArchivoConfiguracion,"r")
		NuevoArchivo = []
		for Linea in Archivo:
			Param, Valor = Linea.split("=")
			if(Param.strip() == Port):
				Linea = Param.strip()+"="+Setting+"\n"
				NuevoArchivo.append(Linea)
			else:
				Linea = Param.strip()+"="+Valor	
				NuevoArchivo.append(Linea)
		Archivo.close()
		Archivo = open(self.ArchivoConfiguracion,"w")	
		Archivo.writelines(NuevoArchivo)		
		Archivo.close()
